package br.usjt.mazerobot;

import br.usjt.mazerobot.comunicacao.Comunicador;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class SimuladorRobo extends JFrame implements Robo{

    
    private Comunicador comunicador;
    private String posicaoSensorUltrasonico = "ESQUERDA";
    
    public SimuladorRobo(Comunicador comunicador){
        setTitle("Simulador Robo");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        setLocation(10,10);
        setSize(300, 0);
        setVisible(true);
        JOptionPane.showMessageDialog(rootPane,"Executando projeto teste" ,"Atenção", JOptionPane.INFORMATION_MESSAGE);
        
        this.comunicador = comunicador;
    }
    

    public void andarFrente() {
        comunicador.enviarLog("Robo andou.");
    }

    public void andarTras() {
        comunicador.enviarLog("Robou andou para tras.");
    }

    public void girarDireita() {
        comunicador.enviarLog("Robo girou para a direita.");
    }

    public void girarEsquerda() {
        comunicador.enviarLog("Robo girou para a esquerda.");
    }

    public void inverterSentido() {
        comunicador.enviarLog("Robo inverteu o sentido.");
    }

    public void calibrar() {
        comunicador.enviarLog("Calibrando...");
    }

    public void ativarSensorUltrasonico() {
        
        comunicador.enviarLog("Sensor ultrasonico ativado.");
    }

    public void desativarSensorUltrasonico() {
        comunicador.enviarLog("Sensor ultrasonico desativado.");
    }

    public int getDistanciaSensorUltrasonico() {
        int opcao = JOptionPane.showConfirmDialog(rootPane, "Existe bloqueio na " + posicaoSensorUltrasonico +
                " ?", "Sensor Ultrasonico", JOptionPane.YES_NO_OPTION);
        return (opcao == JOptionPane.YES_OPTION)? Integer.MIN_VALUE : Integer.MAX_VALUE;
    }

    public void girarSensorUltrasonicoEsquerda() {
        posicaoSensorUltrasonico = "ESQUERDA";
        comunicador.enviarLog("Sensor ultrasonico voltando para posicao inicial...");
    }

    public void girarSensorUltrasonicoFrente() {
        posicaoSensorUltrasonico = "FRENTE";
        comunicador.enviarLog("Sensor ultrasonico posicionado para frente.");
    }

    public void girarSensorUltrasonicoDireita() {
        posicaoSensorUltrasonico = "DIREITA";
        comunicador.enviarLog("Sensor ultrasonico posicionado para a direita.");
    }

    public void ativarSensorLuminosidade() {
        comunicador.enviarLog("Sensor de luminosidade ativado.");
    }

    public void desativarSensorLuminosidade() {
        comunicador.enviarLog("Sensor de luminosidade desativado.");
    }

    public int getLuminosidadeSensor() {
        comunicador.enviarLog("Cor encontrada: xxxx..");
        int opcao = JOptionPane.showConfirmDialog(rootPane, "É o objetivo?", "Sensor de Luminosidade", JOptionPane.YES_NO_OPTION);
        return (opcao == JOptionPane.YES_OPTION) ? 1000 : 0;
    }

    @Override
    public Comunicador getComunicador() {
        return this.comunicador;
    }
}
